const mongoose = require('mongoose');

/**
 * 消息通知模型
 * 类型：1-点赞帖子，2-评论帖子，3-回复评论，4-点赞评论
 */
const MessageSchema = new mongoose.Schema({
    // 消息类型：1-点赞帖子，2-评论帖子，3-回复评论，4-点赞评论
    type: {
        type: Number,
        enum: [1, 2, 3, 4],
        required: true
    },
    // 发送者ID
    senderId: {
        type: String,
        required: true
    },
    // 发送者昵称
    senderNickName: {
        type: String,
        default: '用户'
    },
    // 发送者头像
    senderAvatar: {
        type: String,
        default: ''
    },
    // 接收者ID
    receiverId: {
        type: String,
        required: true
    },
    // 相关帖子ID
    postId: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Post',
        required: true
    },
    // 帖子标题/内容摘要
    postTitle: {
        type: String,
        default: ''
    },
    // 相关评论ID（仅评论/回复类型有值）
    commentId: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Comment',
        default: null
    },
    // 回复ID（仅回复类型有值）
    replyId: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Comment',
        default: null
    },
    // 评论/回复内容
    content: {
        type: String,
        default: ''
    },
    // 是否已读
    isRead: {
        type: Boolean,
        default: false
    },
    // 是否已删除（逻辑删除）
    isDeleted: {
        type: Boolean,
        default: false
    },
    // 消息创建时间
    createTime: {
        type: Number,
        default: () => Date.now()
    },
    // 消息更新时间
    updateTime: {
        type: Number,
        default: () => Date.now()
    }
});

// 创建索引以提高查询性能
MessageSchema.index({ receiverId: 1, isRead: 1 });
MessageSchema.index({ receiverId: 1, createTime: -1 });
MessageSchema.index({ receiverId: 1, isDeleted: 1 });
MessageSchema.index({ senderId: 1 });
MessageSchema.index({ postId: 1 });

module.exports = mongoose.model('Message', MessageSchema); 